Many web sites are increasingly sophisticated and provide rich multimedia experiences for users. Often, the multimedia content of a web page includes a significant number of images which are sent across a communication network. For example, product catalog and social network web pages are generally image-intensive, although many other types of web pages also have significant graphical content. The images of a web page are generally each retrieved through a hypertext transfer protocol (HTTP) request sent from a client device while rendering the web page. However, many networks have high latency and require a significant amount of time to transmit each request and server response including one of the requested images. Latency is a particularly significant issue with respect to networks generally utilized by mobile devices.
In order to reduce the number of HTTP requests sent by a client device for the images of a web page, web servers can parse web pages requested by client devices to identify referenced images, retrieve the images, generate an encoding of each of the images, and modify the web pages to include the encoding of the images in-line prior to sending the web pages to the requesting client devices. The embedded encoding can be a base 64 representation of each image and can be included in the web page according to a data uniform resource identifier (URI) scheme, for example. By including the referenced images in-line, web pages can be rendered by web browsers of client devices without requiring an HTTP request and response for each of the images.
While including images in-line can reduce the time required to render a web page, particularly in high latency communication networks, there are several drawbacks to this approach. For example, the images are not cached separately from the web page that includes the corresponding in-line encoding. Accordingly, every time a change is made to the web page, and a cached version of the web page becomes invalid, the images must again be encoded and embedded in-line. Another drawback is that multiple copies of the encoded version of images that are referenced more than once in a web page are generated, while externally-referenced images are downloaded only once irrespective of the number of references to the images in the web page.